--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
RNS/vendor/i2plib/utils.py 032b1aa3b2808dc5aca0aebada0776c8ee7c6b20 (032b1aa3) Text, 1.20 KB
Tff7b72import T7ee787socket
Tff7b72import T7ee787os
Tff7b72import T7ee787random
Tff7b72import T7ee787string
Tff7b72from T7ee787. Tff7b72import Te6edf3sam
Tff7b72def Td2a8ffget_free_portTb4b4b4(Tb4b4b4)Tb4b4b4:
T8b949e"""Get a free port on your local host"""
Te6edf3s Tff7b72= Te6edf3socketTff7b72.Td2a8ffsocketTb4b4b4(Te6edf3socketTff7b72.Td2a8ffAF_INETTb4b4b4, Te6edf3socketTff7b72.Td2a8ffSOCK_STREAMTb4b4b4)
Te6edf3sTff7b72.Td2a8ffsetsockoptTb4b4b4(Te6edf3socketTff7b72.Td2a8ffSOL_SOCKETTb4b4b4, Te6edf3socketTff7b72.Td2a8ffSO_REUSEADDRTb4b4b4, T79c0ff1Tb4b4b4)
Te6edf3sTff7b72.Td2a8ffbindTb4b4b4(Tb4b4b4(Ta5d6ff'Ta5d6ff'Tb4b4b4, T79c0ff0Tb4b4b4)Tb4b4b4)
Te6edf3free_port Tff7b72= Te6edf3sTff7b72.Td2a8ffgetsocknameTb4b4b4(Tb4b4b4)Tb4b4b4[T79c0ff1Tb4b4b4]
Te6edf3sTff7b72.Td2a8ffcloseTb4b4b4(Tb4b4b4)
Tff7b72return Te6edf3free_port
Tff7b72def Td2a8ffis_address_accessibleTb4b4b4(Te6edf3addressTb4b4b4)Tb4b4b4:
T8b949e"""Check if address is accessible or down"""
Te6edf3s Tff7b72= Te6edf3socketTff7b72.Td2a8ffsocketTb4b4b4(Te6edf3socketTff7b72.Td2a8ffAF_INETTb4b4b4, Te6edf3socketTff7b72.Td2a8ffSOCK_STREAMTb4b4b4)
Te6edf3is_accessible Tff7b72= Te6edf3sTff7b72.Td2a8ffconnect_exTb4b4b4(Te6edf3addressTb4b4b4) Tff7b72== T79c0ff0
Te6edf3sTff7b72.Td2a8ffcloseTb4b4b4(Tb4b4b4)
Tff7b72return Te6edf3is_accessible
Tff7b72def Td2a8ffaddress_from_stringTb4b4b4(Te6edf3address_stringTb4b4b4)Tb4b4b4:
T8b949e"""Address tuple from host:port string"""
Te6edf3address Tff7b72= Te6edf3address_stringTff7b72.Td2a8ffsplitTb4b4b4(Ta5d6ff"Ta5d6ff:Ta5d6ff"Tb4b4b4)
Tff7b72return Tb4b4b4(Te6edf3addressTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4, Tffa657intTb4b4b4(Te6edf3addressTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4)Tb4b4b4)
Tff7b72def Td2a8ffget_sam_addressTb4b4b4(Tb4b4b4)Tb4b4b4:
T8b949e"""
Get SAM address from environment variable I2P_SAM_ADDRESS, or use a default
value
"""
Te6edf3value Tff7b72= Te6edf3osTff7b72.Td2a8ffgetenvTb4b4b4(Ta5d6ff"Ta5d6ffI2P_SAM_ADDRESSTa5d6ff"Tb4b4b4)
Tff7b72return Te6edf3address_from_stringTb4b4b4(Te6edf3valueTb4b4b4) Tff7b72if Te6edf3value Tff7b72else Te6edf3samTff7b72.Td2a8ffDEFAULT_ADDRESS
Tff7b72def Td2a8ffgenerate_session_idTb4b4b4(Te6edf3lengthTff7b72=T79c0ff6Tb4b4b4)Tb4b4b4:
T8b949e"""Generate random session id"""
Te6edf3rand Tff7b72= Te6edf3randomTff7b72.Td2a8ffSystemRandomTb4b4b4(Tb4b4b4)
Te6edf3sid Tff7b72= Tb4b4b4[Te6edf3randTff7b72.Td2a8ffchoiceTb4b4b4(Te6edf3stringTff7b72.Td2a8ffascii_lettersTb4b4b4) Tff7b72for Te6edf3_ Tff7b72in Tffa657rangeTb4b4b4(Te6edf3lengthTb4b4b4)Tb4b4b4]
Tff7b72return Ta5d6ff"Ta5d6ffreticulum-Ta5d6ff" Tff7b72+ Ta5d6ff"Ta5d6ff"Tff7b72.Td2a8ffjoinTb4b4b4(Te6edf3sidTb4b4b4)
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────